package GenericComplex;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class GenericComplex {
    public static <T extends Comparable<? super T>> T max(List<T> list){
        if(list.size()==0) return null;
        T t=list.get(0);
        for(int i=1;i<list.size();i++){
            if(t.compareTo(list.get(i))<0)
                t=list.get(i);
        }
        return t;
//        List<Integer> ret=new ArrayList();
//        ret.add(list.get(0));
//        for(int i=1;i<list.size();i++){
//            if (ret.size()>m&&list.get(i)<ret.get(ret.size()-1))
//                continue;
//            for(int j=0;j<ret.size();j++){
//                if(ret.get(j)<list.get(i))
//                {
//                    ret.add(j,list.get(i));
//                    break;
//                }
//            }
//            if(ret.size()>m)
//                ret.remove(ret.size()-1);
//        }
//        System.out.println(m+"------"+list.size()+"------"+ret.size());
//        return ret;
    }
    public static void main(String[] args){
        List<Integer> list1=new ArrayList<Integer>();
//        Random rm=new Random();
//        rm.setSeed(System.currentTimeMillis());
//        int n=100000000,m=50;
//        List<Integer> list=new ArrayList();
//        for(int i=0;i<n;i++)
//            list.add(rm.nextInt());
//        long start=System.currentTimeMillis();
//        List<Integer> ret=max(list,m);
//        System.out.println("计算时间"+(double)(System.currentTimeMillis()-start)/1000+"秒");

        list1.add(10);
        list1.add(8);
        list1.add(18);
        list1.add(22);
        Integer max=max(list1);
        System.out.println("max="+max);
        List<Vehicle> list2=new ArrayList<Vehicle>();
        list2.add(new Vehicle(80,"black"));
        list2.add(new Vehicle(150,"blue"));
        list2.add(new Bus(200,"green",2));
        Vehicle vehicle=max(list2);
        System.out.println("max vehicle:"+vehicle.getSpeed());
        List<Bus> list3=new ArrayList<Bus>();
        list3.add(new Bus(80,"blue",1));
        list3.add(new Bus(150,"black",1));
        list3.add(new Bus(100,"green",1));
        Bus bus=max(list3);
        System.out.println("max bus:"+bus.getSpeed());
    }
}
